package net.sudot.chess.util;


import net.sudot.commons.json.JsonUtils;

/**
 * 类型转换
 *
 * @author tangjialin on 2018-03-18.
 */
public abstract class BaseAttributeConverter<T> implements javax.persistence.AttributeConverter<T, String> {

    /**
     * 转换属性为数据库值
     *
     * @param attribute 属性
     * @return 数据库值
     */
    @Override
    public String convertToDatabaseColumn(T attribute) {
        if (attribute == null) {
            return null;
        }
        return JsonUtils.toJson(attribute);
    }

    /**
     * 转换数据库值为属性
     *
     * @param dbData 数据库值
     * @return 属性
     */
    @Override
    @SuppressWarnings("unchecked")
    public T convertToEntityAttribute(String dbData) {
        if (dbData == null || dbData.isEmpty()) {
            return null;
        }
        return (T) JsonUtils.toObject(dbData, Object.class);
    }
}

